Max Consecutive Ones II
Leetcode #487 | Medium | Скользящее окно
Идея
Скользящее окно с счетчиком нулей, если > 1 то двигаем l, если <= 1 то берем максимум
Big-O
- Время
O(N) - Память
O(1)
Код
public class Solution {
public int findMaxConsecutiveOnes(int[] nums) {
int l = 0, zeroCount = 0, res = 0;
for (int r = 0; r < nums.length; r++) {
if (nums[r] == 0) zeroCount++;
while (zeroCount > 1) {
if (nums[l] == 0) zeroCount--;
l++;
}
res = Math.max(res, r - l + 1);
}
return res;
}
}